package com.novax.ex.activity.provider.task;

import com.novax.ex.activity.provider.service.BeebUserService;
import com.novax.ex.activity.provider.service.InternalTransferOrderBigdataService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

//
//import com.novax.ex.activity.infrastructure.entity.IeoConfig;
//import com.novax.ex.activity.infrastructure.entity.IeoOrder;
//import com.novax.ex.activity.infrastructure.entity.IeoStages;
//import com.novax.ex.activity.provider.service.IeoConfigService;
//import com.novax.ex.activity.provider.service.IeoOrderService;
//import com.novax.ex.activity.provider.service.IeoStagesService;
//import com.novax.ex.common.core.redis.RedisDistributedLocker;
//import com.novax.ex.common.core.redis.RedisLockUtil;
//import com.novax.ex.common.exception.BusinessException;
//import com.novax.ex.common.util.DateUtil;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.scheduling.annotation.EnableScheduling;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
//import jakarta.annotation.Resource;
//import java.util.Date;
//import java.util.List;
//
///**
// * @Description: 定时任务
// * @Author: ChenXi
// * @Date:  2023/5/6 10:32
// **/
@Component
@EnableScheduling
@Slf4j
public class ScheduleTask {
//
//    @Resource
//    private IeoConfigService ieoConfigService;
//
//    @Resource
//    private IeoOrderService ieoOrderService;
//
//    @Resource
//    private IeoStagesService ieoStagesService;
//
//    /**
//     * IEO分期发币定时处理(每小时一次)
//     */
//    @Scheduled(cron = "0 0 */1 * * ?")
//    private void ieoStageDistribution() {
//        // 查询所有应发币的分期IEO配置
//        List<IeoConfig> stageIeoConfigs = ieoConfigService.findAllStageIeo();
//        if(stageIeoConfigs.isEmpty()){
//            log.info("ScheduleTask stageIeoConfig isEmpty");
//            return;
//        }
//
//        Date now = new Date();
//        // 当前时间
//        String nowStr = DateUtil.dateTo10String(now);
//
//        // 所有应发币的IEO配置
//        for (IeoConfig ieoConfig : stageIeoConfigs) {
//            // ieoId
//            Long ieoId = ieoConfig.getId();
//
//            boolean last = false;
//                    // 查询解锁时间在now之前的分期配置
//                    List<IeoStages> ieoStagesList = ieoStagesService.findByIeoId(ieoId, now);
//                    // 最后一期ID
//                    Long lastIdByIeoId = ieoStagesService.findLastIdByIeoId(ieoId);
//                    if(!ieoStagesList.isEmpty()){
//                        for (IeoStages ieoStages : ieoStagesList) {
//                            // 已发过直接跳过
//                            Integer ieoStagesState = ieoStages.getState();
//                            if(ieoStagesState == 1){
//                                log.info("ScheduleTask stages ieoStageDistribution 此分期已发过, stageId:{}, ieoId:{}", ieoStages.getId(), ieoStages.getIeoId());
//                                continue;
//                            }
//                            Date unlockTime = ieoStages.getUnlockTime();
//                            // 判断是否已到时间 时间准确到小时
//                            if(nowStr.equals(DateUtil.dateTo10String(unlockTime))){
//                                // 是否最后一期
//                                last = lastIdByIeoId.equals(ieoStages.getId());
//
//                                // 真实分配总份数
//                                Integer sharePortion = ieoConfig.getSharePortion();
//                                Integer state = ieoConfig.getState();
//                                Integer unfreeze = ieoConfig.getUnfreeze();
//
//                                // 如果活动未开启或者没有开启发币则不处理
//                                if(state == 0 || unfreeze != 3){
//                                    log.info("ScheduleTask stages Unfree 活动未开启或者已经解冻过, ieoId:{}, unfreeze:{}", ieoId, unfreeze);
//                                    continue;
//                                }
//
//                                // 分配总数为0 不做处理
//                                if(sharePortion.equals(0)){
//                                    log.info("ScheduleTask stages equals 0 sharePortion:{},", sharePortion);
//                                    continue;
//                                }
//
//                                // 所有订单
//                                List<IeoOrder> allIeoOrderList = ieoOrderService.selectOrderByIeoId(ieoId);
//                                if(allIeoOrderList.isEmpty()){
//                                    log.info("ScheduleTask stages unfree 订单为空, ieoId:{}", ieoId);
//                                    continue;
//                                }
//
//                                // 分期发币
//                                ieoOrderService.stagesUnfree(ieoStages, allIeoOrderList, now, false);
//                                // 发完币更新状态
//                                ieoStages.setState(1);
//                                ieoStagesService.modifySelective(ieoStages);
//                            } else {
//                                continue;
//                            }
//                        }
//                        // 如果处理了最后一期
//                        if(last){
//                            ieoConfig.setUnfreeze(4);
//                            ieoConfigService.modifySelective(ieoConfig);
//                        }
//                    }
//                }
//
//
//
//    }
//
    @Scheduled(fixedDelay = 10000)
    private void print() {
        log.info("当前发送总数：" + InternalTransferOrderBigdataService.sendCount.sum());
        log.info("当前接收:"+ InternalTransferOrderBigdataService.receiveCount.sum());
    }
}
